#ifndef QQ_SETS
#define QQ_SETS

#include <qcoreapplication.h>
#include <qsettings.h>
#include <qnetworkproxy.h>
#include <qstandardpaths.h>
#include <qdir.h>

#define qq_settings QQSettings::get_instance()
#define LOG_FILE_MAX_SIZE 1048576*10
#define LOG_FILE_MAX_FILES 10
#define LOG_FILES_MAX_SIZE 1048576*100
#define LOG_FILE_CACHE_SIZE 1048576
#define ZIP_FILE_CACHE_SIZE 4096

#define OPENSSL_KEY "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

class QQSettings :public QObject
{
	Q_OBJECT

private:
	QQSettings(QObject* parent = nullptr);
	~QQSettings();
public:
	static QQSettings* get_instance();

public:
	//user directories
	static QString user_data_directory();
	static QString user_download_directory();
	static QString user_image_directory();
	static QString user_video_directory();
	static QString user_audio_directory();
	static QString user_animation_directory();
	static QString user_log_directory();
	static QString user_log_zip_directory();


	//application directory
	QString application_shape_library_directory();
	QString application_image_library_directory();
	QString application_applications_library_directory();
	QString application_customization_directory();
	QString application_custom_font_directory();
	QString application_audios_library_directory();
	QString application_videos_library_directory();
	QString application_animations_library_directory();
	QString application_startup_hints_directory();

	QNetworkProxy* http_proxy();
};

#endif // !QQ_SETS


